
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>FAQ: Contributing code &#8212; Django 2.2.12.dev20200304094918 documentation</title>
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/underscore.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <script type="text/javascript" src="../_static/language_data.js"></script>
    <link rel="index" title="Index" href="../genindex.html" />
    <link rel="search" title="Search" href="../search.html" />
    <link rel="next" title="Troubleshooting" href="troubleshooting.html" />
    <link rel="prev" title="FAQ: The admin" href="admin.html" />



 
<script type="text/javascript" src="../templatebuiltins.js"></script>
<script type="text/javascript">
(function($) {
    if (!django_template_builtins) {
       // templatebuiltins.js missing, do nothing.
       return;
    }
    $(document).ready(function() {
        // Hyperlink Django template tags and filters
        var base = "../ref/templates/builtins.html";
        if (base == "#") {
            // Special case for builtins.html itself
            base = "";
        }
        // Tags are keywords, class '.k'
        $("div.highlight\\-html\\+django span.k").each(function(i, elem) {
             var tagname = $(elem).text();
             if ($.inArray(tagname, django_template_builtins.ttags) != -1) {
                 var fragment = tagname.replace(/_/, '-');
                 $(elem).html("<a href='" + base + "#" + fragment + "'>" + tagname + "</a>");
             }
        });
        // Filters are functions, class '.nf'
        $("div.highlight\\-html\\+django span.nf").each(function(i, elem) {
             var filtername = $(elem).text();
             if ($.inArray(filtername, django_template_builtins.tfilters) != -1) {
                 var fragment = filtername.replace(/_/, '-');
                 $(elem).html("<a href='" + base + "#" + fragment + "'>" + filtername + "</a>");
             }
        });
    });
})(jQuery);</script>

  </head><body>

    <div class="document">
  <div id="custom-doc" class="yui-t6">
    <div id="hd">
      <h1><a href="../index.html">Django 2.2.12.dev20200304094918 documentation</a></h1>
      <div id="global-nav">
        <a title="Home page" href="../index.html">Home</a>  |
        <a title="Table of contents" href="../contents.html">Table of contents</a>  |
        <a title="Global index" href="../genindex.html">Index</a>  |
        <a title="Module index" href="../py-modindex.html">Modules</a>
      </div>
      <div class="nav">
    &laquo; <a href="admin.html" title="FAQ: The admin">previous</a>
     |
    <a href="index.html" title="Django FAQ" accesskey="U">up</a>
   |
    <a href="troubleshooting.html" title="Troubleshooting">next</a> &raquo;</div>
    </div>

    <div id="bd">
      <div id="yui-main">
        <div class="yui-b">
          <div class="yui-g" id="faq-contributing">
            
  <div class="section" id="s-faq-contributing-code">
<span id="faq-contributing-code"></span><h1>FAQ: Contributing code<a class="headerlink" href="#faq-contributing-code" title="Permalink to this headline">¶</a></h1>
<div class="section" id="s-how-can-i-get-started-contributing-code-to-django">
<span id="how-can-i-get-started-contributing-code-to-django"></span><h2>How can I get started contributing code to Django?<a class="headerlink" href="#how-can-i-get-started-contributing-code-to-django" title="Permalink to this headline">¶</a></h2>
<p>Thanks for asking! We’ve written an entire document devoted to this question.
It’s titled <a class="reference internal" href="../internals/contributing/index.html"><span class="doc">Contributing to Django</span></a>.</p>
</div>
<div class="section" id="s-i-submitted-a-bug-fix-in-the-ticket-system-several-weeks-ago-why-are-you-ignoring-my-patch">
<span id="i-submitted-a-bug-fix-in-the-ticket-system-several-weeks-ago-why-are-you-ignoring-my-patch"></span><h2>I submitted a bug fix in the ticket system several weeks ago. Why are you ignoring my patch?<a class="headerlink" href="#i-submitted-a-bug-fix-in-the-ticket-system-several-weeks-ago-why-are-you-ignoring-my-patch" title="Permalink to this headline">¶</a></h2>
<p>Don’t worry: We’re not ignoring you!</p>
<p>It’s important to understand there is a difference between “a ticket is being
ignored” and “a ticket has not been attended to yet.” Django’s ticket system
contains hundreds of open tickets, of various degrees of impact on end-user
functionality, and Django’s developers have to review and prioritize.</p>
<p>On top of that: the people who work on Django are all volunteers. As a result,
the amount of time that we have to work on the framework is limited and will
vary from week to week depending on our spare time. If we’re busy, we may not
be able to spend as much time on Django as we might want.</p>
<p>The best way to make sure tickets do not get hung up on the way to checkin is
to make it dead easy, even for someone who may not be intimately familiar with
that area of the code, to understand the problem and verify the fix:</p>
<ul class="simple">
<li>Are there clear instructions on how to reproduce the bug? If this
touches a dependency (such as Pillow), a contrib module, or a specific
database, are those instructions clear enough even for someone not
familiar with it?</li>
<li>If there are several patches attached to the ticket, is it clear what
each one does, which ones can be ignored and which matter?</li>
<li>Does the patch include a unit test? If not, is there a very clear
explanation why not? A test expresses succinctly what the problem is,
and shows that the patch actually fixes it.</li>
</ul>
<p>If your patch stands no chance of inclusion in Django, we won’t ignore it –
we’ll just close the ticket. So if your ticket is still open, it doesn’t mean
we’re ignoring you; it just means we haven’t had time to look at it yet.</p>
</div>
<div class="section" id="s-when-and-how-might-i-remind-the-team-of-a-patch-i-care-about">
<span id="when-and-how-might-i-remind-the-team-of-a-patch-i-care-about"></span><h2>When and how might I remind the team of a patch I care about?<a class="headerlink" href="#when-and-how-might-i-remind-the-team-of-a-patch-i-care-about" title="Permalink to this headline">¶</a></h2>
<p>A polite, well-timed message to the mailing list is one way to get attention.
To determine the right time, you need to keep an eye on the schedule. If you
post your message right before a release deadline, you’re not likely to get the
sort of attention you require.</p>
<p>Gentle IRC reminders can also work – again, strategically timed if possible.
During a bug sprint would be a very good time, for example.</p>
<p>Another way to get traction is to pull several related tickets together. When
the someone sits down to review a bug in an area they haven’t touched for
a while, it can take a few minutes to remember all the fine details of how
that area of code works. If you collect several minor bug fixes together into
a similarly themed group, you make an attractive target, as the cost of coming
up to speed on an area of code can be spread over multiple tickets.</p>
<p>Please refrain from emailing anyone personally or repeatedly raising the same
issue over and over. This sort of behavior will not gain you any additional
attention – certainly not the attention that you need in order to get your
issue addressed.</p>
</div>
<div class="section" id="s-but-i-ve-reminded-you-several-times-and-you-keep-ignoring-my-patch">
<span id="but-i-ve-reminded-you-several-times-and-you-keep-ignoring-my-patch"></span><h2>But I’ve reminded you several times and you keep ignoring my patch!<a class="headerlink" href="#but-i-ve-reminded-you-several-times-and-you-keep-ignoring-my-patch" title="Permalink to this headline">¶</a></h2>
<p>Seriously - we’re not ignoring you. If your patch stands no chance of
inclusion in Django, we’ll close the ticket. For all the other tickets, we
need to prioritize our efforts, which means that some tickets will be
addressed before others.</p>
<p>One of the criteria that is used to prioritize bug fixes is the number of
people that will likely be affected by a given bug. Bugs that have the
potential to affect many people will generally get priority over those that
are edge cases.</p>
<p>Another reason that bugs might be ignored for while is if the bug is a symptom
of a larger problem. While we can spend time writing, testing and applying
lots of little patches, sometimes the right solution is to rebuild. If a
rebuild or refactor of a particular component has been proposed or is
underway, you may find that bugs affecting that component will not get as much
attention. Again, this is just a matter of prioritizing scarce resources. By
concentrating on the rebuild, we can close all the little bugs at once, and
hopefully prevent other little bugs from appearing in the future.</p>
<p>Whatever the reason, please keep in mind that while you may hit a particular
bug regularly, it doesn’t necessarily follow that every single Django user
will hit the same bug. Different users use Django in different ways, stressing
different parts of the code under different conditions. When we evaluate the
relative priorities, we are generally trying to consider the needs of the
entire community, not just the severity for one particular user. This doesn’t
mean that we think your problem is unimportant – just that in the limited
time we have available, we will always err on the side of making 10 people
happy rather than making 1 person happy.</p>
</div>
</div>


          </div>
        </div>
      </div>
      
        
          <div class="yui-b" id="sidebar">
            
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
  <h3><a href="../contents.html">Table of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">FAQ: Contributing code</a><ul>
<li><a class="reference internal" href="#how-can-i-get-started-contributing-code-to-django">How can I get started contributing code to Django?</a></li>
<li><a class="reference internal" href="#i-submitted-a-bug-fix-in-the-ticket-system-several-weeks-ago-why-are-you-ignoring-my-patch">I submitted a bug fix in the ticket system several weeks ago. Why are you ignoring my patch?</a></li>
<li><a class="reference internal" href="#when-and-how-might-i-remind-the-team-of-a-patch-i-care-about">When and how might I remind the team of a patch I care about?</a></li>
<li><a class="reference internal" href="#but-i-ve-reminded-you-several-times-and-you-keep-ignoring-my-patch">But I’ve reminded you several times and you keep ignoring my patch!</a></li>
</ul>
</li>
</ul>

  <h4>Previous topic</h4>
  <p class="topless"><a href="admin.html"
                        title="previous chapter">FAQ: The admin</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="troubleshooting.html"
                        title="next chapter">Troubleshooting</a></p>
  <div role="note" aria-label="source link">
    <h3>This Page</h3>
    <ul class="this-page-menu">
      <li><a href="../_sources/faq/contributing.txt"
            rel="nofollow">Show Source</a></li>
    </ul>
   </div>
<div id="searchbox" style="display: none" role="search">
  <h3>Quick search</h3>
    <div class="searchformwrapper">
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    </div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
              <h3>Last update:</h3>
              <p class="topless">Mar 04, 2020</p>
          </div>
        
      
    </div>

    <div id="ft">
      <div class="nav">
    &laquo; <a href="admin.html" title="FAQ: The admin">previous</a>
     |
    <a href="index.html" title="Django FAQ" accesskey="U">up</a>
   |
    <a href="troubleshooting.html" title="Troubleshooting">next</a> &raquo;</div>
    </div>
  </div>

      <div class="clearer"></div>
    </div>
  </body>
</html>